from apps.merchant.item.baseViews import *
from apps.merchant.sku.dao import SkuDao

class ItemViewSet(BaseItemViewSet):

    def get_queryset(self):
        params = getRequestParams(self.request)
        _list = getItemAll(self)
        return _list

    '''新增'''
    @action(methods=['post'], detail=False)
    def createItem(self, request):
        params = getRequestParams(request)
        item = ItemDao().create(params)
        # 如果是多规格，则新增sku
        if len(params.get('skuList')) > 0:
            for sku in params.get('skuList'):
                sku['item'] = item.id
                if sku.get('skuNum'):
                    sku['skuNum'] = sku.get('skuNum')
                else:
                    sku['skuNum'] = str(item.id) + str(random_num(4))
                SkuDao().create(sku)

        return Response(response_success('新增成功'))

    '''更新信息'''
    @action(methods=['post'], detail=False)
    def updateItem(self, request):
        params = getRequestParams(request)
        item = ItemDao().update(params.get('itemId'), params)
        # 更新sku
        print('更新sku')
        if len(params.get('skuList')) > 0:
            sku_ids = []
            for sku in params.get('skuList'):
                if sku.get('id'):
                    if sku.get('skuNum'):
                        sku['skuNum'] = sku.get('skuNum')
                    else:
                        sku['skuNum'] = str(item.id) + str(random_num(4))
                    _sku = Sku.objects.get(id=sku.get('id'))
                    res = SkuDao().update(_sku.id, sku)
                    sku_ids.append(res.id)
                else:
                    sku['item'] = item.id
                    if sku.get('skuNum'):
                        sku['skuNum'] = sku.get('skuNum')
                    else:
                        sku['skuNum'] = str(item.id) + str(random_num(4))
                    res = SkuDao().create(sku)
                    sku_ids.append(res.id)

            _skus = Sku.objects.filter(item=item.id, is_delete=0).exclude(id__in=sku_ids)
            _skus.update(is_delete=1)
        return Response(response_success('更新成功'))
